package com.smedi.ismedi.constructionproject.api.dto.request;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * &#064;Author:  xulinjun
 * &#064;Date:  2021-6-24 17:22
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class ProjectPageQueryRequest implements Serializable {
    /**
     * id(范围)
     */
    @ApiModelProperty(value = "id(范围)")
    private List<Long> ids;

    /**
     * 组织id
     */
    @ApiModelProperty(value = "组织id")
    private Long hrOrganizationId;

    /**
     * 组织id(范围)
     */
    @ApiModelProperty(value = "组织id(范围)")
    private List<Long> hrOrganizationIds;

    /**
     * 项目状态
     */
    @ApiModelProperty(value = "项目状态")
    private String projectStatus;

    /**
     * 项目名称/项目编码/项目经理
     */
    @ApiModelProperty(value = "项目名称/项目编码/项目经理")
    private String codeOrManagerOrName;

    /**
     * 项目类别
     */
    @ApiModelProperty(value = "项目类别")
    private String projectCategory;

    /**
     * 合同工期 开始时间（大于等于）
     */
    @ApiModelProperty(value = "合同工期 开始时间（大于等于）")
    private LocalDate actualDurationBeginGe;

    /**
     * 合同工期 结束时间（小于等于）
     */
    @ApiModelProperty(value = "合同工期 结束时间（小于等于）")
    private LocalDate actualDurationEndLe;

    /**
     * 项目状态(范围)
     */
    @ApiModelProperty(value = "项目状态(范围)")
    private List<String> projectStatuses;

    /**
     * 组织简称
     */
    @ApiModelProperty(value = "组织简称")
    private String organizationShortName;

    /**
     * epc类型
     */
    @ApiModelProperty(value = "epc类型")
    private String epcType;

    /**
     * 视频监控类型
     */
    @ApiModelProperty(value = "视频监控类型")
    private String monitorType;

    /**
     * 视频监控类型(范围)
     */
    @ApiModelProperty(value = "视频监控类型(范围)")
    private List<String> monitorTypes;

    /**
     * 是否根据当前登录人过滤
     */
    @ApiModelProperty(value = "是否根据当前登录人过滤")
    private Boolean byAuthenticationFilter;

    /**
     * 是否有监控摄像
     */
    @ApiModelProperty(value = "是否有监控摄像")
    private Boolean hasVideoMonitor;

    /**
     * 每页行数（分页）
     */
    @ApiModelProperty(value = "每页行数（分页）")
    private long size;

    /**
     * 当前页（分页）
     */
    @ApiModelProperty(value = "当前页（分页）")
    private long current;
}
